package com.zh.webcommon.common.exception;

import com.zh.webcommon.common.exception.errorcode.BizError;
import com.zh.webcommon.common.exception.errorcode.CUSTOM_ERROR;

import static com.zh.webcommon.common.exception.errorcode.BizError.DEFAULT_ERROR;

/**
 * 服务端业务的异常
 */
public class ServiceException extends RuntimeException {

    protected transient final BizError bizError;

    /**
     * 已过时
     * @see ServiceException(BizError,String)
     * @param err 错误信息
     */
    @Deprecated
    public ServiceException(String err) {
        super(err);
        this.bizError = DEFAULT_ERROR;
    }

    /**
     * @param code  异常的code
     * @param msg   提示前端用户的错误信息
     * @param error 异常信息，不展示前端用户，但是会返回给前端，用于快速定位问题
     */
    public ServiceException(int code, String msg, String error) {
        super(error);
        this.bizError = new CUSTOM_ERROR(code, msg);
    }

    /**
     * constructor
     *
     * @param bizError 提示前端用户的错误信息
     */
    public ServiceException(BizError bizError) {
        super(bizError.message());
        this.bizError = bizError;
    }

    /**
     * constructor
     *
     * @param bizError 提示前端用户的错误信息
     * @param error    异常信息，不展示前端用户，但是会返回给前端，用于快速定位问题
     */
    public ServiceException(BizError bizError, String error) {
        super(error);
        this.bizError = bizError;
    }
}
